import * as THREE from 'three';
// import { loadMountain } from './mountain';
// import { loadPlane } from './plane';
// import { loadYellowResidentialBuilding } from './yellow-residential-building';
// import { loadRiver } from './rivier';
// import { loadRiverbank } from './rivierbank';
// import { loadOfficeBuildding } from './office-buildding';
// import { loadPlantTruckCar } from './plant-truck-car';
// import { loadWindTurbine } from './wind-turbine';
import { loadRoad } from './road';
// import { loadBusinessZone } from './business-zone';
// import {
//   // loadPlantFllor,
//   // loadPlantFllor1,
//   // loadPlantHouser,
//   // loadWorkshop,
//   // loadWorkshopRooft,
//   // loadPlantRail,
// } from './plant';
// import { loadHotel } from './hotel';
// import { loadGltf } from '../three-utils';

interface LoadModelParams {
  scene: THREE.Scene;
  skyMap: THREE.Texture;
}

/**
 * 加载模型
 * @param scene
 * @returns
 */
export const loadModel = (data: LoadModelParams) => {
  const { scene, skyMap } = data;

  // 这个是用来读取模型世界坐标的;
  // loadGltf({
  //   modelPath: '/model/business-zone/model.glb',
  // }).then((gltf) => {
  //   const object = gltf.scene;

  //   // 确保 Group 的变换信息被正确应用
  //   object.updateMatrixWorld(true);

  //   const list = object.children.map((model) => {
  //     // 递归更新所有子对象的世界矩阵

  //     const worldMatrix = new THREE.Matrix4();
  //     worldMatrix.copy(model.matrixWorld);

  //     return worldMatrix.toArray();
  //   });
  //   console.log(object, list);

  //   // 将模型添加到场景中
  //   scene.add(object);
  // });

  Promise.all([
    // loadPlane(),
    loadRoad(),
    // loadMountain(),
    // loadRiver(skyMap),
    // loadRiverbank(),
    // loadWindTurbine(),
    // loadYellowResidentialBuilding(),
    // loadOfficeBuildding(),
    // loadPlantTruckCar(),
    // loadBusinessZone(),
    // loadPlantFllor(),
    // loadPlantFllor1(),
    // loadPlantHouser(),
    // loadPlantTruckCar(),
    // loadWorkshop(),
    // loadWorkshopRooft(),
    // loadPlantRail(),
    // loadHotel(),
  ]).then((models) => {
    scene.add(...models.filter((item) => item));
  });
};
